#ifndef SIMULATEDANNEALING_H
#define SIMULATEDANNEALING_H

#include <vector>

#include "Problem.h"

class SimulatedAnnealing {
    std::vector<float> tempVector_;
    Problem * problem_;
    int iterations;

public:
    inline void setTemperatures ( const std::vector<float> & temp_vector ) {
        tempVector_ = temp_vector;
    }

    inline void setProblem ( Problem * problem ) {
        problem_ = problem;
    }
    
    inline int getIterations() const {
        return iterations;
    }

    void simulate();

    static void generateTemperatures ( std::vector<float> &temp_vector, float start, float interval );
};

#endif // SIMULATEDANNEALING_H
